package edu.wust;

import java.io.*;

public class exam42 {
//    定义三角形数序列中第 n 项：tn=n(n+1)/2
//    这样得到前十个三角形数是：1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
//    把一个单词中每个字母在字母表中的位置值加起来（'A'的位置值为 1，'Z'的位置值为 26），
//    可以将一个单词转换为一个数。
//    例如：单词 SKY 的值为 19 + 11 + 25 = 55 = t10 （其中'S'的位置值为 19，'K'的位置值为 11，
//            'Y'的位置值为 25）
//    如果单词的值是一个三角形数，则称该单词为三角形单词，例如 SKY 就是一个三角形单词。
//    p042_words.txt 是一个 16K 的文本文件，包含将近两千个常用英语单词。在这个文件中，一
//    共有多少个三角形词？
//    答案：162
    public static boolean searchnum(int[] trianglenum,int num){    //二分查找
        int left=0,right=trianglenum.length-1,mid=(left+right)>>1;
        while(left<=right){
            if(num==trianglenum[mid])
                return true;
            else if(num>trianglenum[mid]){
                left=mid+1;
                mid=(left+right)>>1;
            }
            else{
                right=mid-1;
                mid=(left+right)>>1;
            }
        }
        return false;
    }
    public static int sum(String s){
        int len=s.length(),all=0;
        for(int i=0;i<len;++i){
            if(s.charAt(i)!='"')
            all+=s.charAt(i)-'A'+1;
        }
        return all;
    }
    public static void main(String[] args) throws IOException {//390
        int[] trianglenum=new int[40];
        for(int i=0;i<40;++i){
            trianglenum[i]=(i+1)*(i+2)/2;
        }
        File f=new File("D:\\大学作业\\JAVA俱乐部\\题目\\p042_words.txt");
        BufferedReader readfile=new BufferedReader(new FileReader(f));
        String[] s=readfile.readLine().split(",");
        int len=s.length,count=0;
        for(int i=0;i<len;++i){
            if(searchnum(trianglenum,sum(s[i])))
                count++;
        }
        System.out.println(count);
    }
}
